﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;

namespace ShopCD.BusinessLogic
{
    class bl_ShopCD
    {
        ShopCD.AccessData.AccessData con;
        Form frm;
        DataTable tb,tb_Com;
        BindingSource bin;
        public bl_ShopCD(GUI.frm_ShopCD f)
        {
            con = new AccessData.AccessData();
            frm = f;
        }

        public void Refresh()
        {
            ((DataGridView)frm.Controls["gv_ShopCD"]).DataSource = tb;

            //bin = new BindingSource();
            //bin.DataSource = tb;
            //((BindingNavigator)frm.Controls["nv_Data"]).BindingSource = bin;
            //DataGridView datagrid = (DataGridView)frm.Controls["gv_ShopCD"];
            //datagrid.DataSource = bin;
            //datagrid.Columns["tb_MaCD"].ToolTipText = "Mã bị điên!";
            //datagrid.Columns["cb_MaDM"].SortMode = DataGridViewColumnSortMode.Automatic;

            ((TextBox)frm.Controls["tb_MaCD"]).DataBindings.Clear();
            ((TextBox)frm.Controls["tb_TenLoai"]).DataBindings.Clear();
            ((ComboBox)frm.Controls["cb_MaDM"]).DataBindings.Clear();
            ((TextBox)frm.Controls["tb_DonGia"]).DataBindings.Clear();
            ((TextBox)frm.Controls["tb_MaDM"]).DataBindings.Clear();
            //Binding data các row vào các textbox
            ((TextBox)frm.Controls["tb_MaCD"]).DataBindings.Add("Text", tb, "MaCD");
            ((ComboBox)frm.Controls["cb_MaDM"]).DataSource = tb_Com;
            ((ComboBox)frm.Controls["cb_MaDM"]).DisplayMember = "TenDM";
            ((ComboBox)frm.Controls["cb_MaDM"]).ValueMember = "MaDM";
            ((TextBox)frm.Controls["tb_TenLoai"]).DataBindings.Add("Text", tb, "TenLoai");
            ((TextBox)frm.Controls["tb_DonGia"]).DataBindings.Add("Text", tb, "Dongiathue");
            ((TextBox)frm.Controls["tb_MaDM"]).DataBindings.Add("Text", tb, "MaDM");
        }

        /// <summary>
        /// Hàm hiển thị dữ liệu trên gridview
        /// </summary>
        /// <param name="MaDM"></param>
        public void Show(string MaCD)
        {
            SqlParameter[] pr = new SqlParameter[1];
            if (MaCD != null)
                pr[0] = new SqlParameter("@MaCD", MaCD);
            else
                pr[0] = new SqlParameter("@MaCD", DBNull.Value);
            SqlParameter[] prDM = { new SqlParameter("@MaDM", DBNull.Value) };
            con.Open();
            //Gọi hàm Execute_sp với 2 tham đối: Tên thủ tục thực hiện, và mảng giá trị tham đối kiểu parameter
            tb = con.Execute_sp("sp_ViewCD", pr);
            tb_Com = con.Execute_sp("sp_ViewDM", prDM);
            con.Close();
            Refresh();
        }

        /// <summary>
        /// Hàm thêm row vào database đồng thời hiển lại lên gridview
        /// </summary>
        public void Add()
        {
            string str_MaCD, str_MaDM, str_Ten, str_gia;
            str_MaCD = ((TextBox)frm.Controls["tb_MaCD"]).Text;
            str_MaDM = ((ComboBox)frm.Controls["cb_MaDM"]).SelectedValue.ToString();
            str_gia = ((TextBox)frm.Controls["tb_DonGia"]).Text;
            int gia = Convert.ToInt32(str_gia);
            str_Ten = ((TextBox)frm.Controls["tb_TenLoai"]).Text;
            MessageBox.Show(str_MaDM);
            SqlParameter[] pr = { new SqlParameter("@MaCD", str_MaCD), new SqlParameter("@MaDM", str_MaDM), new SqlParameter("@TenLoai", str_Ten), new SqlParameter("@Dongiathue", gia) };

            con.Open();
            tb = con.Execute_sp("sp_AddCD", pr);
            con.Close();
            Refresh();
        }

        /// <summary>
        /// Hàm xóa row trong database đồng thời hiển thị lại gridview
        /// </summary>
        public void Delete()
        {
            string str_MaCD;
            str_MaCD = ((TextBox)frm.Controls["tb_MaCD"]).Text;
            SqlParameter[] pr = { new SqlParameter("@MaCD", str_MaCD) };
            con.Open();
            tb = con.Execute_sp("sp_DelCD", pr);
            con.Close();
            Refresh();
        }

        /// <summary>
        /// Hàm thay đổi 1 row trong database đồng thời hiển thị lại gridview
        /// </summary>
        public void Edit()
        {
            string str_MaCD, str_MaDM, str_Ten, str_gia;
            str_MaCD = ((TextBox)frm.Controls["tb_MaCD"]).Text;
            str_MaDM = ((ComboBox)frm.Controls["cb_MaDM"]).SelectedValue.ToString();
            str_gia = ((TextBox)frm.Controls["tb_DonGia"]).Text;
            int gia = Convert.ToInt32(str_gia);
            str_Ten = ((TextBox)frm.Controls["tb_TenLoai"]).Text;
            SqlParameter[] pr = { new SqlParameter("@MaCD", str_MaCD), new SqlParameter("@MaDM", str_MaDM), new SqlParameter("@TenLoai", str_Ten), new SqlParameter("@Dongiathue", gia) };
            con.Open();
            tb = con.Execute_sp("sp_EditCD", pr);
            con.Close();
            Refresh();
        }

        /// <summary>
        /// Hàm Save lại những thay đổi(Nếu có) của gridview vào database đồng thời hiển thị lại gridview
        /// </summary>
        public void Save()
        {
            ((DataGridView)frm.Controls["gv_ShopCD"]).DataSource = tb;
            con.Open();
            con.Save(ref tb);
            con.Close();
        }
    }
}
